/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vista;

import control.Control;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import modelo.Respuesta;
import persistencia.PersiPregunta;

/**
 *
 * @author alumneDAM
 */
public class PanelPreguntas extends javax.swing.JPanel {

    private Control control;
    private PersiPregunta persiPregunta = new PersiPregunta();
    private ArrayList<Respuesta> respuestas;

    public PanelPreguntas(Control control) {
        initComponents();
        this.control = control;

        btn_respuesta1.addActionListener(control);
        btn_respuesta2.addActionListener(control);
        btn_respuesta3.addActionListener(control);
        btn_respuesta4.addActionListener(control);

        pbr_tiempo.setValue(0);
    }

    public void colocarPreguntaYRespuestas(int posicion) {
        control.setPregunta(persiPregunta.preguntaAleatoria(control.getPartida().getTurno().escogerPosicion(posicion),control.getPartida().getTurno().getPreguntasUsadas()));
        respuestas = persiPregunta.respuestas(control.getPregunta().getIdPregunta());

        this.lbl_pregunta.setText(control.getPregunta().getPregunta());
        this.btn_respuesta1.setText(respuestas.get(0).getRespuesta());
        this.btn_respuesta2.setText(respuestas.get(1).getRespuesta());
        this.btn_respuesta3.setText(respuestas.get(2).getRespuesta());
        this.btn_respuesta4.setText(respuestas.get(3).getRespuesta());
    }

    public String mostrarRespuestaCorrecta() {
        String resp = null;
        
        for (int i = 0; i < respuestas.size(); i++) {
            if (control.getPregunta().getIdRespuesta() == respuestas.get(i).getIdRespuesta()) {
                if (this.btn_respuesta1.getText().equals(respuestas.get(i).getRespuesta())) {
                    resp = respuestas.get(i).getRespuesta();
                    this.btn_respuesta1.setBackground(Color.GREEN);
                    break;
                } else if (this.btn_respuesta2.getText().equals(respuestas.get(i).getRespuesta())) {
                    resp = respuestas.get(i).getRespuesta();
                    this.btn_respuesta2.setBackground(Color.GREEN);
                    break;
                } else if (this.btn_respuesta3.getText().equals(respuestas.get(i).getRespuesta())) {
                    resp = respuestas.get(i).getRespuesta();
                    this.btn_respuesta3.setBackground(Color.GREEN);
                    break;
                } else if (this.btn_respuesta4.getText().equals(respuestas.get(i).getRespuesta())) {
                    resp = respuestas.get(i).getRespuesta();
                    this.btn_respuesta4.setBackground(Color.GREEN);
                    break;
                }
            }
        }
        return resp;
    }

    public void comprobarRespuesta(JButton boton, String respuesta, int nuevaPos) {
        boolean comprobacion = false;
        String color;

        if (boton.getText().equals(respuesta)) {
            comprobacion = true;
        }
        
        color=control.getPantallaPartida().getPanelTablero().colocarQuesito(nuevaPos);
        
        if (comprobacion){
            if (control.getPartida().getId_jugador1().equals(control.getPartida().getTurno().getJugadorActivo())) {
                control.getPartida().setPosicionJ1(nuevaPos);
                if(control.getTablero().getCasilla(control.getPartida().getPosicionJ1()).isEspecial()){
                    control.getPersiPartida().guardarQuesito(control.getPartida().getId_partida(), control.getPartida().getId_jugador1(), color);
                    if(control.getPersiPartida().recuperarNumeroQuesitos(control.getPartida().getId_partida(), control.getPartida().getId_jugador1())==8){
                        JOptionPane.showMessageDialog(this, "HAS GANADO");
                        control.getPartida().terminarPartida(control.getPartida().getId_jugador1());
                    }
                }
            } else {
                control.getPartida().setPosicionJ2(nuevaPos);
                if(control.getTablero().getCasilla(control.getPartida().getPosicionJ2()).isEspecial()){
                    control.getPersiPartida().guardarQuesito(control.getPartida().getId_partida(), control.getPartida().getId_jugador2(), color);
                    if(control.getPersiPartida().recuperarNumeroQuesitos(control.getPartida().getId_partida(), control.getPartida().getId_jugador2())==8){
                        JOptionPane.showMessageDialog(this, "HAS GANADO");
                        control.getPartida().terminarPartida(control.getPartida().getId_jugador2());
                    }
                }
            }
            control.getPersiTurno().guardarDadoTirado(control.getPartida().getId_partida(), control.getPartida().getTurno().getIdTurno(), 0, 0);
            control.getPersiTurno().guardarPreguntasUsadas(control.getPartida().getId_partida(), control.getPartida().getTurno().getIdTurno(), control.getPregunta().getIdPregunta());
            control.getPersiPartida().guardarPartida(control.getPartida());
            control.getPersiEstadistica().guardarEstadistica(control.getPartida().getTurno().getJugadorActivo(), color, 1);
        } else {
            control.getPersiEstadistica().guardarEstadistica(control.getPartida().getTurno().getJugadorActivo(), color, 0);
            if (control.getPartida().getId_jugador1().equals(control.getPartida().getTurno().getJugadorActivo())) {
                control.getPartida().nuevoTurno(control.getPartida().getId_jugador2());
            } else {
                control.getPartida().nuevoTurno(control.getPartida().getId_jugador1());
            }
            control.getPersiTurno().modificaTurno(control.getPartida().getTurno());
        }
    }
 
    public boolean tiempoPregunta() {
        boolean tiempoAcabado = false;
        int tiempoTotal = 100;
        int tiempoTranscurrido = 0;

        while (tiempoTranscurrido <= tiempoTotal) {
            this.pbr_tiempo.setValue(tiempoTranscurrido); // Asignar un valor a la barra de progreso.
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
            }
            tiempoTranscurrido += 1;

            if (this.pbr_tiempo.getValue() == tiempoTotal) {
                this.pbr_tiempo.setValue(tiempoTotal);
                tiempoAcabado = true;
                break;
            }
        }
        return tiempoAcabado;
    }

    public void deshabilitarBotones() {
        this.btn_respuesta1.removeActionListener(control);
        this.btn_respuesta2.removeActionListener(control);
        this.btn_respuesta3.removeActionListener(control);
        this.btn_respuesta4.removeActionListener(control);
    }

    public void inicializarPanelPreguntas() {
        this.btn_respuesta1.setBackground(new Color(240, 240, 240));
        this.btn_respuesta1.addActionListener(control);

        this.btn_respuesta2.setBackground(new Color(240, 240, 240));
        this.btn_respuesta2.addActionListener(control);

        this.btn_respuesta3.setBackground(new Color(240, 240, 240));
        this.btn_respuesta3.addActionListener(control);

        this.btn_respuesta4.setBackground(new Color(240, 240, 240));
        this.btn_respuesta4.addActionListener(control);

        this.pbr_tiempo.setValue(0);

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lbl_pregunta = new javax.swing.JLabel();
        btn_respuesta1 = new javax.swing.JButton();
        btn_respuesta2 = new javax.swing.JButton();
        btn_respuesta3 = new javax.swing.JButton();
        btn_respuesta4 = new javax.swing.JButton();
        pbr_tiempo = new javax.swing.JProgressBar();

        setBackground(new java.awt.Color(0, 255, 204));

        lbl_pregunta.setText("Panel de Preguntas");

        btn_respuesta1.setActionCommand("respuesta4");

        btn_respuesta2.setActionCommand("respuesta1");

        btn_respuesta3.setActionCommand("respuesta2");

        btn_respuesta4.setActionCommand("respuesta3");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(200, 200, 200)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btn_respuesta3)
                            .addComponent(btn_respuesta2)
                            .addComponent(btn_respuesta1)
                            .addComponent(lbl_pregunta)
                            .addComponent(btn_respuesta4))
                        .addGap(204, 204, 204))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(pbr_tiempo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(148, 148, 148))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(44, 44, 44)
                .addComponent(lbl_pregunta)
                .addGap(18, 18, 18)
                .addComponent(pbr_tiempo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(92, 92, 92)
                .addComponent(btn_respuesta2)
                .addGap(42, 42, 42)
                .addComponent(btn_respuesta3)
                .addGap(43, 43, 43)
                .addComponent(btn_respuesta4)
                .addGap(45, 45, 45)
                .addComponent(btn_respuesta1)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btn_respuesta1;
    private javax.swing.JButton btn_respuesta2;
    private javax.swing.JButton btn_respuesta3;
    private javax.swing.JButton btn_respuesta4;
    private javax.swing.JLabel lbl_pregunta;
    private javax.swing.JProgressBar pbr_tiempo;
    // End of variables declaration//GEN-END:variables
}
